博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目阶段四:首页的分页
阅读量:3970 次
发布时间:2019-05-24

本文共 6002 字,大约阅读时间需要 20 分钟。

1、首页 index.jsp 的跳转

在这里插入图片描述

web下的index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--只负责请求转发--%>

复制一份原来的index.jsp到web下的pages下添加文件夹client下

在这里插入图片描述

/** * 首页的分页 * @param req * @param resp * @throws ServletException * @throws IOException */protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.page(pageNo, pageSize); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

其web.xml配置文件:

ClientBookServlet
com.atguigu.web.ClientBookServlet
ClientBookServlet
/client/bookServlet

2、分页条的抽取

2.1、抽取分页条中请求地址为 url 变量

1.在 page 对象中添加 url 属性

// 分页条的请求地址private  String url;

2 在 Servlet 程序的 page 分页方法中设置 url 的分页请求地址

BookServlet.java:

Page
page = bookService.page(pageNo, pageSize);page.setUrl("manager/bookServlet?action=page");// //3 保存Page对象到Request域中req.setAttribute("page",page);ClientBookServlet.java://3 保存Page对象到Request域中req.setAttribute("page",page);

page_nav.jsp:

<%--大 于 首 页 , 才 显 示 --%>
首页
上一页
${i}
下一页末页

3、首页价格搜索

在这里插入图片描述

BookDao:

/**  * 查询价格在区间[min,max]里的总记录数  * @param min 最低价  * @param max 最高价  * @return 价格在区间[min,max]里的记录条数  */Integer queryForPageTotalCountByPrice(int min,int max); /**  * 查询价格在区间[min,max]里的数据信息  * @param begin 本页数据开始的索引  * @param pageSize 本页显示多少条数据  * @param min 最低价  * @param max 最高价  * @return 返回该查询结果的数据信息集合  */List
queryForPageItemsByPrice(int begin,int pageSize,int min,int max);

BookDaoImpl:

@Overridepublic Integer queryForPageTotalCountByPrice(int min, int max) {
String sql = "select count(*) from t_book where price between ? and ?"; Number count = (Number) queryForSingleValue(sql, min, max); return count.intValue();}@Overridepublic List
queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {
String sql = "select `id`,`bookName`,`author`,`price`,`sales`,`stock`,`img_path` imgPath from t_book " + "where price between ? and ? order by price limit ?,?"; return queryForList(Book.class,sql,min,max,begin,pageSize);}

BookDaoTest:

@Testpublic void queryForPageTotalCountByPrice() {
System.out.println(bookDao.queryForPageTotalCountByPrice(0, 20));}@Testpublic void queryForPageItemsByPrice() {
List
books = bookDao.queryForPageItemsByPrice(0, 2, 0, 20); for (Book book : books) {
System.out.println(book); }}

BookService:

/** * 价格在区间[min,max]的page对象所含信息 * @param pageNo 第几页 * @param pageSize 一页显示几条数据 * @param min 最低价 * @param max 最高价 * @return */Page
pageByPrice(int pageNo,int pageSize,int min,int max);

BookServiceImpl:

@Overridepublic Page
pageByPrice(int pageNo, int pageSize, int min, int max) {
Page
page = new Page
(); // 设置每页显示的数量 page.setPageSize(pageSize); // 求总记录数 Integer pageTotalCount = bookDao.queryForPageTotalCountByPrice(min,max); // 设置总记录数 page.setPageTotalCount(pageTotalCount); Integer pageTotal = pageTotalCount / pageSize; if (pageTotalCount % pageSize > 0) {
pageTotal += 1; } // 设置总页码 page.setPageTotal(pageTotal); //设置当前页为第几页 page.setPageNo(pageNo); // 求当前页数据的开始索引 int begin = (page.getPageNo() - 1) * pageSize; // 求当前页数据 List
items = bookDao.queryForPageItemsByPrice(begin,pageSize,min,max); page.setItems(items); return page;}

BookServiceTest:

@Testpublic void pageByPrice() {
Page
bookPage = bookService.pageByPrice(1, 4, 0, 30); System.out.println(bookPage);}

ClientBookServlet:

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo,pageSize,min,max); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

index.jsp:

价格:
元 -

修改在区间[min,max]里显示出来数据的页码

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize,min,max int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.pageByPrice(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo, pageSize, min, max); StringBuilder sb = new StringBuilder("client/bookServlet?action=pageByPrice"); // 如果最小价格的参数,追加到分页条的地址参数中 if(req.getParameter("min") != null){
sb.append("&min=").append(req.getParameter("min")); } // 如果最大价格的参数,追加到分页条的地址参数中 if(req.getParameter("max") != null){
sb.append("&max=").append(req.getParameter("max")); } page.setUrl(sb.toString()); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

在这里插入图片描述

转载地址:http://zquki.baihongyu.com/

你可能感兴趣的文章
项目快速开发经验
查看>>
LambdaQueryWrapper动态加过滤条件 动态Lambda(首发)
查看>>
javascript 大数值进行按位运算
查看>>
jacob 设置 插入word 的图片大小
查看>>
html2image html转换为图片 生成快照 java
查看>>
GPRS+wifi 云巡更系统开放sdk api 可以和OA CRM 对接巡更系统
查看>>
浏览器页面之间推送消息 A窗口给B窗口推送消息 用于cef多个browser之间通信
查看>>
冒泡排序的2种写法
查看>>
java 使用html写UI 做winform win桌面客户端程序(一)
查看>>
jxbrowser 教程 1 使用jxbrowser 创建简单的浏览器 使用html5+java写cs客户端
查看>>
jxbrowser 监听所有网络请求 jxbrowser 系列教程2
查看>>
jxbrowser 实现java 和 js互相调用(破解版请联系作者)
查看>>
jxbrowser java代码直接调用js代码 (破解版请联系作者)免license
查看>>
jxbrowser 实现自定义右键菜单 jxbrowser破解版请联系作者
查看>>
快速开发框架设计
查看>>
需要统计的数据
查看>>
eclipse js jsp 卡怎么办,解决办法
查看>>
高性能J2EE接口平台设计
查看>>
spring mvc tomcat 线程池的坑
查看>>
JAVA 生成不重复订单号 优化版本 订单号格式为yyyymmdd后面自增
查看>>